<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>70_箭头函数this</title>
		<script>
			/* 
			箭头函数:
				([参数]) => 返回值
			例子:
				无参箭头函数:()=>返回值
				一个参数的:a =>返回值
				多个参数的:(a，b) => 返回值
				只有一个语句的函数:()=>返回值
				只返回一个对象的函数:()=> ({...})
				有多行语句的函数:()=>{
				....
				return 返回值
				}
				
			箭头函数没有自己的this，它的this有外层作用域决定
				箭头函数的this和它的调用方式无关。
				
			
			 */

			function fn() {
				console.log("fn....", this);
			}
			const fn2 = () => {
				console.log("fn2...", this);
			}
			fn(); //this是winddow对象
			fn2(); //this是winddow对象

			const obj = {
				name: "孙悟空",
				//对象中属性名额属性值相同,可以简写一个属性名即可。
				//fn: fn,
				//fn2: fn2
				fn,
				fn2
			}
			obj.fn(); //this是obj。
			obj.fn2(); //this是winddow对象

			const obj2 = {
				name: "孙悟空2",
				//这个方法也可以简写,如下
				//sayHello:function(){},
				sayHello() {
					console.log(this.name);

					/*
					function t() {
						console.log("t--->", this);
					}
					t(); //这个t是以函数形式调用的，所以里面的this是window对象。
					*/
					t = () => {
						console.log("t--->", this);
					}
					t(); //t---> {name: '孙1悟空2', sayHello: ƒ}
				}
			}
			obj2.sayHello();
		</script>
	</head>
	<body>
	</body>
</html>